home *** CD-ROM | disk | FTP | other *** search
- /************************************************************************
- *
- * File: cd.h
- *
- * Purpose: hold constants for audio access of
- * AppleCD SC™ drive
- *
- * Description: This file contains all the constants necessary
- * to access the AppleCD SC drive. We define
- * several variations on the CntrlParam data
- * structure, since the driver requires strange
- * formats for some of the inputs.
- *
- * Copyright © 1988, Apple Computer, Inc. All Rights Reserved.
- *
- ************************************************************************/
- #include <Types.h>
- #include <Memory.h>
- #include <OSUtils.h>
- #include <QuickDraw.h>
- #include <Resources.h>
- #include <Devices.h>
- #include <errors.h>
- #include <Files.h>
- #include <Serial.h>
- #include <Strings.h>
- #include <ToolUtils.h>
- #include <HyperXCmd.h>
-
- #define GLOBALNAME "\pxxxCDRefNum"
- #define PLAYMODE "\pxxxCDPlayMode"
- #define DRIVERNAME "\pxxxCDDriverName"
-
- /* There are 75 blocks per second of cd data. */
- #define BLOCKSEC 75L /* blocks per second */
- #define BLOCKMIN 4500L /* blocks per minute */
-
- /* Some constants, from the CD SC Developer's Guide chapter 7 */
- #define AMSFADDR 1
- #define TRACKADDR 2
- #define BUFADDR 3
- #define STEREO 9
- #define INPROGRESS 0
-
- /* Some commands, from the CD SC Developer's Guide chapter 7 */
- #define AEJECT 7
- #define READTOC 100
- #define READQ 101
- #define ASEARCH 103
- #define APLAY 104
- #define APAUSE 105
- #define ASTOP 106
- #define ASTATUS 107
- #define ASCAN 108
-
- /* constants for the STR# resource which contains
- ** our various strings (for easy localization)
- */
- #define DRIVENAME 1
- #define DISKTITLE 2
- #define TRACKTITLE 3
- #define DRIVER_STR 4
- #define STR_ID 8078
-
-
- /* these two conversion routines assume that x is only 2 digits long */
- #define BCD2DECIMAL(x) ( (((x & 0xFF) >> 4) *10) + ((x & 0xFF) & 0x0F) )
- #define DECIMAL2BCD(x) ( (((x & 0xFF) / 10) * 16) + ((x & 0xFF) % 10) )
-
- /* This version uses csParam as chars, not shorts */
- typedef struct {
- struct QElem *qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- char *ioNamePtr;
- short ioVRefNum;
- short ioCRefNum;
- short csCode;
- char csParam[22]
- } CDParam;
-
- /* use this version for play, scan and stop commands */
- typedef struct {
- struct QElem *qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- char *ioNamePtr;
- short ioVRefNum;
- short ioCRefNum;
- short csCode;
- short addrFormat;
- char unused;
- char minute;
- char second;
- char block;
- short stopAddress;
- short playMode;
- char unused2[12];
- } CDPlayParam;
-
- /* use this version for pause */
- typedef struct {
- struct QElem *qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- char *ioNamePtr;
- short ioVRefNum;
- short ioCRefNum;
- short csCode;
- long pauseMode; /* 1 = pause, 0 = resume */
- char unused[18];
- } CDPauseParam;
-
- typedef struct {
- struct QElem *qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- char *ioNamePtr;
- short ioVRefNum;
- short ioCRefNum;
- short csCode;
- char audioStatus;
- char playMode;
- char controlField;
- char nextMinute; /* next track absolute start */
- char nextSecond;
- char nextBlock;
- char unused[16];
- } CDStatusParam;
-
-
- typedef struct {
- struct QElem *qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- char *ioNamePtr;
- short ioVRefNum;
- short ioCRefNum;
- short csCode;
- short readType;
- char *bufAddr;
- short bufferLength;
- char track;
- char unused[13];
- } CDPlay3Param;
-
- /*
- ** use this version for disc id, to conform to the id
- ** used by the CD Remote.
- */
- typedef struct {
- struct QElem *qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- ProcPtr ioCompletion;
- OSErr ioResult;
- char *ioNamePtr;
- short ioVRefNum;
- short ioCRefNum;
- short csCode;
- unsigned long discID;
- char unused[18];
- } CDIDParam;
-
- /*
- ** These routines are defined in "FormatStrings.c" and can be used
- ** when appropriate in an XFCN or XCMD
- */
- void FormatString(char *, long *, long);
- void ltoa(long, char *);
- void reverse(char *);
-
- /*
- ** These routines are defined in "Programs.c" and can be used
- ** when appropriate in an XFCN or XCMD
- */
- /* prototype definitions for functions */
- Boolean FindIndex(unsigned long, short *);
- OSErr AddDisc(unsigned long, short);
- OSErr AddIndX(unsigned long, short, unsigned short *);
- OSErr AddProG(unsigned short, short);
- OSErr AddTitles(unsigned short, short);
- OSErr IDDisc(short, unsigned long *);
- OSErr GetNumberTracks(short, short *);
- void HandleToPString(Handle, Ptr);
- /*
- ** These routines are defined in "Track.c" and can be used
- ** when appropriate in an XFCN or XCMD
- */
- OSErr ReadQ(short, long *, long *, long *, long *);
- OSErr DiscTime(short, long *, long *, long *);
- void TimeDiff(long *, long *, long *, long, long, long, long, long, long);
- OSErr TrackStart(short, long, long *, long *, long *);
-
-